package com.hsp.demo_01;

import java.math.BigDecimal;
import java.text.DecimalFormat;

/**
 * char  字符的使用
 */
public class Demo_03 {
    public static void main(String[] args){

        /*
         需求： 将华氏温度 转为 摄氏温度
            转化公式： 5 / 9 * （华氏温度 - 100）
            华氏温度： 1236.3
         */

        double huashi = 1236.3;
        double sheshi = 5 / 9 * (1236.3 - 100);
        System.out.println(sheshi); //结果为：0.0
        /**
         * 原因分析：
         *      因为 5 / 9 = 0, 所以无论是什么华氏温度，最后通过上述公式，得到的都是 0.0
         */
        //正确转换
        sheshi = 5.0 / 9 * (huashi - 100);
        System.out.println(sheshi);//结果为：631.2777777777778
        BigDecimal bigDecimal = new BigDecimal(sheshi);
        //官方：接近正无穷大的舍入模式。 向上取， 四舍五入模式， 保留3位小数
        double v = bigDecimal.setScale(3, BigDecimal.ROUND_CEILING).doubleValue();
        //官方：接近零的舍入模式。 向下取， 取小于该数的最大值， 例如8.778，以下面的方式取两位小数,结果为：8.77
        double v1 = bigDecimal.setScale(3, BigDecimal.ROUND_DOWN).doubleValue();
        //官方：接近负无穷大的舍入模式
        double v2 = bigDecimal.setScale(3, BigDecimal.ROUND_FLOOR).doubleValue();
        System.out.println(bigDecimal); //631.27777777777782830526120960712432861328125
        System.out.println(v);  //631.278
        System.out.println(v1); //631.277
        System.out.println(v2); //631.277

        //方式二： pattern格式可以 0 和 # 搭配使用
        /*
            使用0， 例如： pattern: 0000.00
            格式化  0.326  --》 0000.33
            使用#， 例如： pattern: ####.##
            格式化  0.326  --》 0.33
            也可以搭配使用：
                    ##00.00##
                    整数位中，#必须在前，小数位中，#必须在之后
               如果不是这样的格式，则会报错
              会报错：java.lang.IllegalArgumentException: Unexpected '0' in pattern "##00.##00"
         */
        DecimalFormat decimalFormat = new DecimalFormat("0000.00");
        String format = decimalFormat.format(sheshi);
        System.out.println(format);

        decimalFormat = new DecimalFormat("#.##");
        format = decimalFormat.format(sheshi);
        System.out.println(format);

        decimalFormat = new DecimalFormat("0000.00");
        format = decimalFormat.format(0.326);
        System.out.println(format);

        decimalFormat = new DecimalFormat("####.##");
        format = decimalFormat.format(0.326);
        System.out.println(format);

        decimalFormat = new DecimalFormat("##00.##00");
        format = decimalFormat.format(0.326);
        System.out.println(format);





    }
}
